/**
 * 
 */
package com.pe.pgn.clubpgn.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.pe.pgn.clubpgn.domain.ClpbAlmacen;
import com.pe.pgn.clubpgn.domain.ClpdArticulo;
import com.pe.pgn.clubpgn.domain.ClpdTipoTarjetaPersona;
import com.pe.pgn.clubpgn.domain.ClpmCatalogo;
import com.pe.pgn.clubpgn.domain.beans.BNCatalogoDetalle;
import com.pe.pgn.clubpgn.domain.beans.BNCatalogo;
import com.pe.pgn.clubpgn.domain.beans.BNDocumentoMovArticulo;

/**
 * @author Edwin Farfan
 *
 */
public interface CatalogoDao {
	
	public List<ClpmCatalogo> obtenerListaCatalogos();
	
	public ClpmCatalogo obtenerCatalogo(Long id);

	public int guardarCatalogo(ClpmCatalogo catalogo) throws Exception;
	
	public int guardarTodoCatalogo(ClpmCatalogo catalogo,BNCatalogoDetalle detalle,ClpdArticulo articulo,ClpbAlmacen almacen)throws Exception;
	
	public int eliminarCatalogo(Long id);
	
	public List<ClpmCatalogo> busquedaCatalogo(String descripcion, String codigo, 
			String tipoTarjeta, String fechaInicio, String fechaFin, String estado);

	public int existeCatalogoRangoFecha(String fechaInicio, String fechaFin, Long catalogoID);
	
	public ClpdArticulo obtenerArticulo(BNCatalogoDetalle detalle);

	public List<BNCatalogo> obtenerTodoCatalogos(boolean itemDefault);
	
	public boolean eliminarPremiosCatalogo(ClpmCatalogo catalogo);
	
	public void setEliminacionPremioCatalogo(ClpmCatalogo catalogo);
	
	public void inactivarCatalogo(ClpmCatalogo catalogo);
	
	public ClpbAlmacen getClpbAlmacen();

	public void actualizarStockArticulo(ClpdArticulo articulo, BigDecimal canjeLimite, boolean flat);
	
	public boolean vigenciaCatalogo(ClpmCatalogo catalogo);
	
	public ClpdTipoTarjetaPersona  obtenerTipoTarjetaPersona(Long id);

	public int existeCatalogoDescription(String deCatalogo, Long id);

	public int existeCatalogoCodigoCatalog(String coCodigoCatalogo, Long id);
	
	
	public List<ClpmCatalogo> obtenerListaCatalogosVigente();
	public int darbajaPremio(Long id);
	public BNCatalogoDetalle obtenerCatalogoxPremio(Long id, Long idpremio);
	public String generarDocumentoDarBajaPremioCatalogo(Long idcatalogo,Long idpremio, Long  idarticulo, int resultado);
	public int obteneralmacenes(String almacen, String articulo);
	public List<Map<String, Object>>  obtenerStockAlmacen(Long idCatalogo,Long idPremio);
	public String documentoDetalleDarBajaPremios(String id,Long idocumento,String coalmacenorigen, String vaStockActual, String idpremio, String idcatalogo,String cantidad,String idarticulo);
	public int actualizarPremiosDarBaja(Long idCatalogo, Long ipremio, BigDecimal stockcatalogo, BigDecimal stockcatalogoespejo );
	public List<ClpmCatalogo> obtenerCatalogoVigentes(String fechaInicio, String fechafin);
	public int sonCatalogosParalelos(String fechaInicio, String fechaFin);
	
	public String obteneridPremioInstantaneo(String idscatalogo);
	
	public List<BNCatalogoDetalle> obtenerPremiosCatalogos(String idCatalogo, String idArticulo);
	public List<ClpmCatalogo> obtenerCatalogos();
	
	public int validarCodInstRepetido(String fechaInicio, String fechaFin, int idcodPreInstantaneo);
	
	public int cantidadPremiosCatalogo(String idCatalogo);

}
